DECLARE FUNCTION Attrib% (FileSpec$)

'$INCLUDE: 'QB.BI'

DIM A%

A% = Attrib%("C:\QBASIC.EXE")

IF A% >= 0 THEN
	PRINT "Attribute value ="; A%

	IF (A% AND 1) THEN PRINT "Read-only"
	IF (A% AND 2) THEN PRINT "Hidden"
	IF (A% AND 4) THEN PRINT "System"
	IF (A% AND 8) THEN PRINT "Volume label"
	IF (A% AND 16) THEN PRINT "Subdirectory"
	IF (A% AND 32) THEN PRINT "Archive"
ELSE
	PRINT "File not found or access error."
END IF

FUNCTION Attrib% (FileSpec$)

	DIM Regs AS RegTypeX

	FileSpec$ = FileSpec$ + CHR$(0)   ' ASCIIZ string

	Regs.ax = &H4300                  ' AH=43h, AL=00h
	Regs.ds = VARSEG(FileSpec$)
	Regs.dx = SADD(FileSpec$)

	CALL INTERRUPTX(&H21, Regs, Regs)

	IF (Regs.flags AND 1) THEN
		Attrib% = -1                  ' Error (file not found, etc.)
	ELSE
		Attrib% = Regs.cx             ' Attribute byte returned in CX
	END IF

END FUNCTION

